luci-app-keepalived: include FAULT state to state
authorChristian Korber <[email protected]>
Mon, 10 Feb 2025 08:15:19 +0000 (09:15 +0100)
committerChristian Korber <[email protected]>
Wed, 12 Feb 2025 09:31:50 +0000 (10:31 +0100)
Upstream only handles state according to whether the machine was in
BACKUP or MASTER. FAULT state is not handled but upstream keepalived
does support that by exporting json with `state` which reflects the
state (FAULT included).

Signed-off-by: Christian Korber <[email protected]>
applications/luci-app-keepalived/htdocs/luci-static/resources/view/keepalived/overview.js
applications/luci-app-keepalived/htdocs/luci-static/resources/view/status/include/35_keepalived.js

index 943d9ac732dbacaede1c60cb4170c29c227b4893..f241cc3d055d1a12782d81b6864dc3fcc18c02d3 100644 (file)
@@ -39,7 +39,21 @@ return view.extend({
 
                                cbi_update_table(table,
                                        targets.map(function(target) {
-                                               var state = (target.stats.become_master - target.stats.release_master) ? 'MASTER' : 'BACKUP';
+                                               var state;
+                                               var instance_state = target.data.state;
+
+                                               if (instance_state === 2) {
+                                                       state = 'MASTER';
+                                               } else if (instance_state === 1) {
+                                                       state = 'BACKUP';
+                                               } else if (instance_state === 0) {
+                                                       state = 'INIT';
+                                               } else if (instance_state === 3) {
+                                                       state = 'FAULT';
+                                               } else {
+                                                       state = 'UNKNOWN';
+                                               }
+
                                                if (instances != '') {
                                                        for (var i = 0; i < instances.length; i++) {
                                                                if (instances[i]['name'] == target.data.iname) {
index cf870ece927db35745fe2e98bcea5ef44419bb82..f4b83e76d776bbb6397faad93220dd442691aebc 100644 (file)
@@ -38,7 +38,21 @@ return baseclass.extend({
 
                cbi_update_table(table,
                        targets.map(function(target) {
-                               var state = (target.stats.become_master - target.stats.release_master) ? 'MASTER' : 'BACKUP';
+                               var state;
+                               var instance_state = target.data.state;
+
+                               if (instance_state === 2) {
+                                       state = 'MASTER';
+                               } else if (instance_state === 1) {
+                                       state = 'BACKUP';
+                               } else if (instance_state === 0) {
+                                       state = 'INIT';
+                               } else if (instance_state === 3) {
+                                       state = 'FAULT';
+                               } else {
+                                       state = 'UNKNOWN';
+                               }
+
                                if (instances != '') {
                                        for (var i = 0; i < instances.length; i++) {
                                                if (instances[i]['name'] == target.data.iname) {